/**
 * 项目名：	Rumba Plan
 * 
 * 版权所有(C)，上海海鼎信息工程股份有限公司，2006，所有权利保留。
 * 
 * 文件名：	ViewOrganization.java
 * 模块说明：	
 * 修改历史：
 * 2006-10-18 - lxm - 创建。
 */
package com.hd123.rumba.action.organization;

import net.sf.hibernate.HibernateException;

import com.hd123.rumba.domain.CDomain;
import com.hd123.rumba.exception.BusinessException;
import com.hd123.rumba.request.Action;
import com.hd123.rumba.request.ActionAbstractImpl;
import com.hd123.rumba.request.ActionConstants;

/**
 * 组织 | Action | 提供统一入口
 * 
 * @author lxm
 * 
 */
public class ViewOrganization extends ActionAbstractImpl {

  @Override
  public String execute() throws Exception {
    if (dd.getCurrentUser() == null) {
      dd.setWorkingTemplate(ActionConstants.SESSIONTIMEOUT);
      return ActionConstants.APPLICATIONFRAME;
    }

    Action action = null;
    if (this.getCurrentDomain().getCode().equals(CDomain.VALUE_ID_ROOT))
      action = new ViewOrganizationAdvSys();
    else
      action = new ViewOrganizationSystem();
    action.init(dd);
    return action.execute();
  }

  /* 权限功能名 */
  public static final String FUNCTION_CREATE = "新建";
  public static final String FUNCTION_VIEW = "查看";
  public static final String FUNCTION_EDIT = "编辑";
  public static final String FUNCTION_DELETE = "删除";
  public static final String FUNCTION_UNDELETE = "恢复删除";

  /**
   * 根据功能等信息取得权限ID。
   * 
   * @param functionName
   *          功能名，取值为类似“FUNCTION_*”的常量。
   * @param orgUuid
   *          指定访问组织的uuid。
   * @param isRecycle
   *          是否是回收站
   * @return 返回权限ID，若没有权限对应则返回null。
   * @throws BusinessException
   * @throws HibernateException
   */
  public String getPermission(String functionName, String orgUuid, Boolean isRecycle)
      throws BusinessException, HibernateException {
    if (this.getCurrentUser() == null)
      throw new BusinessException("必须先登录系统。");

    BaseViewOrganization action = null;
    if (this.getCurrentDomain().getCode().equals(CDomain.VALUE_ID_ROOT))
      action = new ViewOrganizationAdvSys();
    else
      action = new ViewOrganizationSystem();
    action.init(dd);
    return action.getPermission(functionName, orgUuid, isRecycle);
  }

  /**
   * 根据功能等信息取得权限ID。
   * 
   * @param functionName
   *          功能名，取值为类似“FUNCTION_*”的常量。
   * @param relationship
   *          指定与当前登录组织的关系。
   * @param isRecycle
   *          是否是回收站
   * @return 返回权限ID，若没有权限对应则返回null。
   * @throws BusinessException
   * @throws HibernateException
   */
  public String getPermission(String functionName, int relationship, Boolean isRecycle)
      throws BusinessException, HibernateException {
    if (this.getCurrentUser() == null)
      throw new BusinessException("必须先登录系统。");

    BaseViewOrganization action = null;
    if (this.getCurrentDomain().getCode().equals(CDomain.VALUE_ID_ROOT))
      action = new ViewOrganizationAdvSys();
    else
      action = new ViewOrganizationSystem();
    action.init(dd);
    return action.getPermission(functionName, relationship, isRecycle);
  }

}
